//
//  UsersTableViewController.swift
//  Core note
//
//  Created by Mac  on 2017/9/16.
//  Copyright © 2017年 Mac . All rights reserved.
//

import UIKit
import CoreData
class UsersTableViewController: UITableViewController {
    var  contex:NSManagedObjectContext!
    var  entity:NSEntityDescription!
    var  dataArray:Array<Any> = []
    override func viewDidLoad() {
        super.viewDidLoad()
        contex = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
        entity = NSEntityDescription.entity(forEntityName: "Users", in:  contex)
        
        self.refreshData()
        
    }
    

    
    /*@IBAction func insert(_ sender: Any) {
        let alert = UIAlertController(title:  "添加姓名", message: "请输入名字", preferredStyle: .alert)
        let saveAction = UIAlertAction(title: "保存", style: .default) { (action:UIAlertAction!) in
             let  texField = alert.textFields![0] as UITextField
            
            let indexPath = indexPath(row:self)
        }

        
    }*/
    
    
    
    
    
         //读取数据
    func refreshData(){
      
        let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
        do {
            let searchResults = try contex.fetch(fetchRequest)
            
            self.dataArray = searchResults
            
            print("numbers of \(searchResults.count)")
            
            for p in (searchResults as! [NSManagedObject]){
                print("name:  \(p.value(forKey: "name")!) age: \(p.value(forKey: "age")!) num: \(String(describing: p.value(forKey: "num")))")
                
            }
        } catch  {
            print(error)
        }
         self.tableView.reloadData()

    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        // #warning Incomplete implementation, return the number of sections
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // #warning Incomplete implementation, return the number of rows
        return self.dataArray.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for:  indexPath)
        let data = dataArray[indexPath.row] as AnyObject
        cell.textLabel?.text = (data.value(forKey: "name") as! String).trimmingCharacters(in: .newlines)
        return cell
        
    }
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        let story = UIStoryboard.init(name: "App", bundle: Bundle.main)
        let vc = story.instantiateViewController(withIdentifier:  "UserContent") as! UserContentViewController
        let data = self.dataArray[indexPath.row] as! NSManagedObject
        vc.data = data
        self.navigationController?.pushViewController(vc, animated: true)
    }
    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        
        return true
    }
    
    
    // 删除数据
    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if  editingStyle == .delete{
            contex.delete(dataArray[indexPath.row] as! NSManagedObject)
            dataArray.remove(at: indexPath.row)
            try! contex.save()
            tableView.deleteRows(at: [indexPath], with: .fade)
            
        }
        else if editingStyle == .insert{
            /*contex.insert(dataArray[indexPath.row] as! NSManagedObject)
            dataArray.append(indexPath.row)
            try! contex.save()
            tableView.insertRows(at:  [indexPath], with: .fade)*/
            
        }
    }
    /*
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)

        // Configure the cell...

        return cell
    }
    */

    /*
    // Override to support conditional editing of the table view.
    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        // Return false if you do not want the specified item to be editable.
        return true
    }
    */

    /*
    // Override to support editing the table view.
    override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if editingStyle == .delete {
            // Delete the row from the data source
            tableView.deleteRows(at: [indexPath], with: .fade)
        } else if editingStyle == .insert {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
        }    
    }
    */

    /*
    // Override to support rearranging the table view.
    override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath) {

    }
    */

    /*
    // Override to support conditional rearranging of the table view.
    override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
        // Return false if you do not want the item to be re-orderable.
        return true
    }
    */

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}
